package cn.tedu.csmailproduct.service.impl;

import cn.tedu.csmailproduct.ex.ServiceException;
import cn.tedu.csmailproduct.mapper.AlbumMapper;
import cn.tedu.csmailproduct.mapper.AttributeTemplateMapper;
import cn.tedu.csmailproduct.pojo.dto.AlbumAddNewDTO;
import cn.tedu.csmailproduct.pojo.dto.AttributeTemplateAddNewDTO;
import cn.tedu.csmailproduct.pojo.entity.Album;
import cn.tedu.csmailproduct.pojo.entity.AttributeTemplate;
import cn.tedu.csmailproduct.service.IAlbumService;
import cn.tedu.csmailproduct.service.IAttributeTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 处理属性模板数据的业务实现类
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
@Service
public class AttributeTemplateServiceImpl implements IAttributeTemplateService {

    @Autowired
    private AttributeTemplateMapper attributeTemplateMapper;

    public AttributeTemplateServiceImpl(){
        log.debug("创建业务对象：AttributeTemplateServiceImpl");
    }

    @Override
    public void addNew(AttributeTemplateAddNewDTO attributeTemplateAddNewDTO) {
        log.debug("开始处理【添加属性模板】的业务，参数：{}",attributeTemplateAddNewDTO);
        // 从参数对象中获取属性模板名称
        String attributeTemplateAddNewDTOName = attributeTemplateAddNewDTO.getName();
        // 检查属性模板名称是否已经被占用（属性模板表中是否已经存在此名称的数据）
        log.debug("检查属性模板名称是否已经被占用");
        int count = attributeTemplateMapper.countByName(attributeTemplateAddNewDTOName);
        if (count > 0) {
            // 是：属性模板名称已经被占用，添加属性模板失败，抛出异常
            String message = "添加属性模板失败，属性模板名称已经被占用!";
            log.debug(message);
            throw new ServiceException(message);
        }

        // 否：属性模板名称没有被占用，则向属性模板表中插入数据
        log.debug("属性模板名称没有被占用，将向属性模板表中插入数据");
        AttributeTemplate attributeTemplate = new AttributeTemplate();
        BeanUtils.copyProperties(attributeTemplateAddNewDTO,attributeTemplate);
        log.debug("即将插入属性模板数据：{}", attributeTemplate);
        attributeTemplateMapper.insert(attributeTemplate);
        log.debug("插入属性模板数据完成");
    }
}
